#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<vector>
using namespace std;


//class Solution {
//public:
//    int searchInsert(vector<int>& nums, int target) {
//        int len = nums.size() - 1;
//        int left = 0, right = len;
//        while (left < right)
//        {
//            int mid = left + (right - left) / 2;
//            if (nums[mid] >= target) right = mid;
//            else left = mid + 1;
//        }
//        if (nums[left] < target)return left + 1;
//        else return left;
//    }
//};
//
//class Solution {
//public:
//    int peakIndexInMountainArray(vector<int>& arr) {
//        int len = arr.size() - 2;
//        int left = 1, right = len;
//        while (left < right)
//        {
//            int mid = left + (right - left + 1) / 2;
//            if (arr[mid] > arr[mid - 1]) left = mid;
//            else(arr[mid] < arr[mid - 1]) right = mid - 1;
//        }
//        return left;
//
//    }
//};


//class Solution {
//public:
//    int peakIndexInMountainArray(vector<int>& arr) {
//        int left = 0, right = arr.size() - 1;
//        while (left < right)
//        {
//            int mid = left + (right - left) / 2;
//            if (arr[mid] > arr[mid + 1])right = mid;
//            else left = mid + 1;
//        }
//        return left;
//    }
//};

//class Solution {
//public:
//    int findMin(vector<int>& nums) {
//        int left = 0;
//        int right = nums.size()-1;
//        while (left < right)
//        {
//            int mid = left + (right - left) / 2;
//            if (nums[mid] > nums[mid - 1]) left = mid + 1;
//            else right = mid;
//        }
//        return nums[left];
//    }
//};

class Solution {
public:
    int findMin(vector<int>& nums) {
        int left = 0, right = nums.size() - 1;

        while (left < right)
        {
            int mid = left + (right - left) / 2;
            if (nums[left] < nums[right]) return nums[left];
            else {
                if (nums[mid] >= nums[left]) left = mid + 1;
                else right = mid;
            }


        }
        return nums[left];
    }
};
int main()
{
    vector<int> nums{ 2,1 };
    Solution t;
    cout<<t.findMin(nums)<<endl;
    return 0;
}